/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Modelo.PersistenciaJDBC;

import Modelo.Entidades.Alumno;
import Modelo.Entidades.AlumnoImpl;
import Modelo.Entidades.AnuncioImpl;
import Modelo.Entidades.Sesion;
import Modelo.Entidades.SesionImpl;
import Modelo.Entidades.Usuario;
import Modelo.Persistencia.SesionDAO;
import java.io.Serializable;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Miguel
 */
public class SesionDAOJDBC implements SesionDAO{

    public void create(Sesion entidad) {
        String sql = "INSERT INTO SESION(DNI, FECHA) VALUES (?,?)";

        try {
            //Introducción de Informacion en la tabla SESION
            PreparedStatement stm = Persistencia.createConnection().prepareStatement(sql);
            stm.setString(1, entidad.getUsuario().getDNI());
            java.sql.Timestamp timestamp = new java.sql.Timestamp(entidad.getFecha().getTime());
            stm.setTimestamp(2, timestamp);
            stm.execute();

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
    }

    public Sesion read(Serializable pk) {
        //Metodo no contemplado
        return null;
    }

    public void update(Sesion entidad) {
        //Metodo no contemplado
    }

    public void delete(Sesion entidad) {
        //Metodo no contemplado
    }

    public List<Sesion> list() {
        List<Sesion> sesiones = new ArrayList<Sesion>();
        Sesion sesion = null;

        try {
            Statement stmt = Persistencia.createConnection().createStatement();
            ResultSet res = stmt.executeQuery("SELECT * FROM SESION");
            String dni;
            Usuario u;
            Date fecha;

            while (res.next()) {
                dni = res.getString("DNI");
                fecha = new Date(res.getTimestamp("FECHA").getTime());

                sesion = new SesionImpl(new AlumnoImpl(dni), fecha);
                sesiones.add(sesion);
            }

            for(Sesion s: sesiones){
                s.setUsuario(new UsuarioDAOJDBC().read(s.getUsuario().getDNI()));
            }

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
        return sesiones;
    }

    public List<Sesion> listByDNI(String DNI) {
        List<Sesion> sesiones = new ArrayList<Sesion>();
        Sesion sesion = null;

        try {
            Statement stmt = Persistencia.createConnection().createStatement();
            ResultSet res;
            String dni;
            Usuario u;
            Date fecha;

            res = stmt.executeQuery("SELECT * FROM SESION WHERE DNI = '" +DNI+ "'");
            while (res.next()) {
                dni = res.getString("DNI");
                fecha = new Date(res.getTimestamp("FECHA").getTime());

                sesion = new SesionImpl(new AlumnoImpl(dni), fecha);
                sesiones.add(sesion);
            }

            for(Sesion s: sesiones){
                s.setUsuario(new UsuarioDAOJDBC().read(s.getUsuario().getDNI()));
            }

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
        return sesiones;
    }

}
